<?php

namespace controllers\admin;

use libs\request as request;
use libs\registry as Registry;

class aktualnosci extends \controllers\_SkyCMS_Controller{
    
    
    private $_tabela = 'aktualnosci';
    
    private $_strony;
    
    private $_ilosc_na_strone = 5; 
    
    public function __construct($options, $request) 
    {
        parent::__construct($options, $request);
        $this->uprawnieniaCheck('aktualnosci');
    }
    
    /**
     * @route=(/aktualnosci)
     * @route=(/aktualnosci/strona={numer})
     */
    public function index($array = '')
    {  
        $paginacja = false;
        $strona = '';
        $ilosc_stron = 0;
        
        $db = Registry::get("database");
        
        $ilosc = $db->select('COUNT(*) as ilosc')
                    ->from($this->_tabela)
                    ->execute();
        
        $aktualnosci = $db->select('*')
                    ->from($this->_tabela);
        
        $ilosc_newsow = $ilosc[0]['ilosc'];
        
        
        if($ilosc_newsow > $this->_ilosc_na_strone)
        {
            $paginacja = true;
            
            $ilosc_stron= round($ilosc_newsow/$this->_ilosc_na_strone);
        }
        
        // jeśli przekazujemy parametr do funkcji to go pobieramy, bo rozumiemy, że to numer strony
        if(sizeof($array))
        {
            @list($strona) = $array;
            
            if(!is_numeric($strona) || $strona > $ilosc_stron)
            {
                die('Nie ma takiej strony');
            }
            
            $aktualnosci->limit($this->_ilosc_na_strone,$strona);
        }
        else
        {
            $aktualnosci->limit($this->_ilosc_na_strone);
        }
        
        $aktualnosci = $aktualnosci->execute();
        
        return array('aktualnosci'=>$aktualnosci,'paginacja'=>$paginacja,'ilosc'=>$ilosc_stron,'aktualna'=>$strona);
    }
    
     
        
    
    /**
     * @route=(/aktualnosci/podglad/aktualnoscid={id}
     */
    function podglad($array)
    {
        $id = $array[0];
        
        $db = Registry::get("database");

        $news = $db->get_where($this->_tabela, array('id'=>$id));
        
        $news[0]['news_short'] = request::post('news_short');
        $news[0]['news_long'] = request::post('news_long');
        
        $view = new \libs\view();
        $view->renderTwig('aktualnosci_controller', 'jedna_aktualnosc',array('news'=>$news[0]),true);
        
        return array();
    }
    
    
    /**
     * @route=(/aktualnosci/SEO/zapisz/{id})
     */
    public function seo_zapisz($array)
    {
        $id = $array[0];
        
        $db = Registry::get("database");
        
        $result = $db->update('aktualnosci_seo', array(  'title'=>request::post('title'),
                                                    'keywords'=>request::post('keywords'),
                                                    'opis'=>request::post('opis')
                                                    ),
                                                array(
                                                    'id_aktualnosci'=>$id
                                                    ));
        
        
        return array();
        
    }
    
    
    /**
     * @route=(/aktualnosci/SEO/{id})
     */
    public function edycja_seo($array)
    {
        $id = $array[0];
        
        try{
            
            $db = Registry::get("database");
            $news = $db->get_where('aktualnosci_seo', array('id_aktualnosci'=>$id));
            
            if($news == null)
            {
                throw new \Exception('Nie znaleziono rekordu');
            }
            
        }
        catch(\Exception $e)
        {
            echo $e->getMessage();
            die();
        }
        
        return array('news'=>$news[0]);
    }
    
    
     /**
     * @route=(/aktualnosci/edytuj/{id})
     */
    public function edytuj($array)
    {
        $id = $array[0];
        
        try{
            
            $db = Registry::get("database");
            
            $news = $db->get_where($this->_tabela, array('id'=>$id));
            
            if($news == null)
            {
                throw new \Exception('Nie znaleziono rekordu');
            }
            
        }
        catch(\Exception $e)
        {
            echo $e->getMessage();
            die();
        }
        
        return array('news'=>$news[0]);
    } 
    
    
    /**
     * 
     * @route=(/aktualnosci/zapisz/{id})
     */
    public function zapisz($array)
    {
        $id = $array[0];
        
        $db = Registry::get("database");
        
        $result = $db->update($this->_tabela, array('slug'=>self::slugify(request::post('tytul')),
                                                    'jezyk'=>request::post('jezyk'),
                                                    'tytul'=>request::post('tytul'),
                                                    'news_short'=>request::post('news_short'),
                                                    'news_long'=>request::post('news_long')
                                                    ),
                                                array(
                                                    'id'=>$id
                                                    ));
             
	$plikzdjecietmp = $_FILES['zdjecie']['tmp_name'];
	if (!empty($plikzdjecietmp))
        {
            $idtemp_banner = time();
            $plik_zdjecie_nazwa = $idtemp_banner.'.jpg';
            if(is_uploaded_file($plikzdjecietmp)) 
            {
                    move_uploaded_file($plikzdjecietmp, UPLOAD_PATH."aktualnosci/$plik_zdjecie_nazwa");
                    
                    $this->miniatura_kwadrat(UPLOAD_PATH."aktualnosci/", $plik_zdjecie_nazwa);
 
                    $db->update('aktualnosci',array('zdjecie'=>$plik_zdjecie_nazwa),array('id'=>$id));
                    
            }
            else 
                die("Nie udało się wgrać zdjęcia na serwer<br>");
	}
        
        header('Location: '.URL.'_SkyCMS/aktualnosci');
    }
    
      
    
    /**
     * @route=(/aktualnosci/usun/{id})
     */
    public function usun($array)
    {
        $id = $array[0];
        
        $db = Registry::get("database");
        
        $result = $db->delete($this->_tabela,array('id'=>$id));
        
        header('Location: '.URL.'_SkyCMS/aktualnosci');
    }
    
    
    /**
     * @route=(/aktualnosci/dodaj)
     * 
     */
    public function dodaj()
    {
        $db = Registry::get('database');
        $db->insert('kategorie_gal',array('nazwa'=>request::post('tytul')));
        
        $db->insert('aktualnosci',array('slug'=>self::slugify(request::post('tytul')),
                                        'tytul'=>request::post('tytul'),
                                        'data'=>date('Y-m-d H:i:s'),
                                        'news_short'=>request::post('news_short'),
                                        'news_long'=>request::post('news_long'),
                                        'id_galerii'=>$db->insert_id()
        ));
        
        $news_id = $db->insert_id();
        $db->insert('aktualnosci_seo',array('id_aktualnosci' => $news_id, 'title' => request::post('tytul')));
        
	$plikzdjecietmp = $_FILES['zdjecie']['tmp_name'];
	if (!empty($plikzdjecietmp))
        {
            $idtemp_banner = time();
            $plik_zdjecie_nazwa = $idtemp_banner.'.jpg';
            if(is_uploaded_file($plikzdjecietmp)) 
            {
                    move_uploaded_file($plikzdjecietmp, UPLOAD_PATH."aktualnosci/$plik_zdjecie_nazwa");
                    
                    $this->miniatura_kwadrat(UPLOAD_PATH."aktualnosci/", $plik_zdjecie_nazwa);
 
                    $db->update('aktualnosci',array('zdjecie'=>$plik_zdjecie_nazwa),array('id'=>$news_id));
                    
            }
            else 
                die("Nie udało się wgrać zdjęcia na serwer<br>");
	}
        
        header('Location: '.URL.'_SkyCMS/aktualnosci');
    }
        
    
    private function miniatura_kwadrat($path, $imagename) 
    {
        // $path - where image is located (image needs to be already on server!!)
        // $imagename - file name of image
        $site_max_thumbnails_size=200; // max size
        // load image and get image size
        $img = imagecreatefromjpeg( "{$path}{$imagename}" );
        $width = imagesx( $img );
        $height = imagesy( $img );

        // calculate thumbnail size
        if ($height>=$width) {
                $smallerSize=$width;
                $croppingStartHeight=($height-$smallerSize)/2;
                $croppingStartWidth=0;
        }

        else {
                $smallerSize=$height;
                $croppingStartHeight=0;
                $croppingStartWidth=($width-$smallerSize)/2;	
        }

        $croppedImage=imagecreatetruecolor($smallerSize, $smallerSize); // create square image
        $resizedImage=imagecreatetruecolor($site_max_thumbnails_size, $site_max_thumbnails_size);
        imagecopy($croppedImage, $img, 0, 0, $croppingStartWidth, $croppingStartHeight, $smallerSize, $smallerSize); // build cropped, square image
        imagecopyresampled ($resizedImage, $croppedImage, 0, 0, 0, 0, $site_max_thumbnails_size, $site_max_thumbnails_size, $smallerSize, $smallerSize); // copy and resize old image into new image
        $pathToThumbs=$path.'';
        $imagename2=explode('_',$imagename);

        if (!imagejpeg($resizedImage, "{$pathToThumbs}{$imagename2[0]}{$imagename2[1]}" )) // save thumbnail into a file
        $result='Nie można zapisać miniaturki w folderze docelowym!';

        ImageDestroy($croppedImage); 
        ImageDestroy($resizedImage);

        return $result;
    }
   
}

?>
